package com.xinzhitong.www.service;

import com.xinzhitong.www.exception.ConsignGeneralException;
import com.xinzhitong.www.exception.SystemException;
import com.xinzhitong.www.utils.MyPageInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 系统服务
 *
 * @author 魏骆淳
 */
public interface SystemService {

    /**
     * 发表意见
     *
     * @param opinionText    意见文本
     * @param opinionPicture 意见图片
     * @throws SystemException 系统异常
     */
    void putOpinionInformation(String opinionText, List<MultipartFile> opinionPicture) throws SystemException;

    /**
     * 新发表意见
     *
     * @param opinionText      意见文本
     * @param opinionPictureNum  意见图片
     * @return 发表成功状态或者一串目标地址
     */
    List<String> putNewOpinionInformation(String opinionText,Integer opinionPictureNum) throws SystemException;

    /**
     * 获取关于我们
     *
     * @return 关于我们文件的内容
     * @throws SystemException 系统异常
     */
    Map<String, Object> getAboutUs() throws SystemException;

    /**
     * 获取联系我们
     *
     * @return 联系我们的内容
     * @throws SystemException 系统异常
     */
    Map<String, Object> getContactUs() throws SystemException;

    /**
     * 获取服务协议
     *
     * @return 服务协议内容
     * @throws SystemException 系统异常
     */
    Map<String, Object> getServiceAgreement() throws SystemException;

    /**
     * 获取反馈详情
     *
     * @param id 反馈id
     * @return 反馈详情
     */
    Map<String, Object> getOpinionInformation(Integer id);

    /**
     * 批量删除反馈
     *
     * @param idList 反馈id列表
     * @return 删除成功信息
     */
    String deleteOpinion(List<Integer> idList);

    /**
     * 获取用户反馈概览
     *
     * @param state    状态
     * @param name     关键字
     * @param pageNo   页码
     * @param pageSize 页大小
     * @return 概览
     * @throws ConsignGeneralException 没概览异常
     */
    MyPageInfo getOpinionGeneral(String state, String name, Integer pageNo, Integer pageSize)
            throws ConsignGeneralException;

}
